package main.java.day05;


import main.java.day05.entity.ListNode;

/**
 * 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 
 *
 * 示例：
 *
 * 输入：1->2->4,
 *       1->3->4
 *       1 3
 * 输出：1->1->2->3->4->4
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/merge-two-sorted-lists
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class day05 {

   static   class Solution {
        public static ListNode mergeTwoLists(ListNode l1, ListNode l2) {

            //1  2 5
            //0  3 4
            if(l1 == null) {
                return l2;
            }
            if(l2 == null) {
                return l1;
            }

            if(l1.val < l2.val) {
                l1.next = mergeTwoLists(l1.next, l2);
                return l1;
            } else {
                l2.next = mergeTwoLists(l1, l2.next);
                return l2;
            }

        }
    }

    public static void main(String[] args) {

        ListNode listNode1=new ListNode(1);
        ListNode listNode2=new ListNode(2);
        ListNode listNode3=new ListNode(5);

        ListNode listNode4=new ListNode(0);
        ListNode listNode5=new ListNode(3);
        ListNode listNode6=new ListNode(4);

        //链表1
        listNode1.setNext(listNode2);
        listNode1.getNext().setNext(listNode3);

        //链表2
        listNode4.setNext(listNode5);
        listNode4.getNext().setNext(listNode6);

        System.out.println(Solution.mergeTwoLists(listNode1,listNode4));//ListNode{val=1, next=ListNode{val=2, next=ListNode{val=4, next=null}}}




//        Solution.mergeTwoLists();
    }

}
